package com.xufx.algorithm.sort;

/**
 * n个数字进行排序
 * 选择排序：每一次都选择最小向前挪动
 * 这是比较正宗的选择排序吧（个人认为）
 */
public class SelectionSort {
    public static void main(String[] args) {
        int[] nums = new int[]{3,1,6,7,8,-1,-5};
        selectSort(nums);
        for (int num: nums){
            System.out.println(num);
        }
    }

    private static void selectSort(int[] nums){
        for(int i = 0; i < nums.length; i ++){
            // 初始化这一轮的最小值
            int min = nums[i];
            // 用于标记最小值的位置
            int mark = i;
            for (int j = i + 1; j < nums.length; j++){
                // 这里不用Math.min是为了能够把j的值赋值给mark
                if(nums[j] < min){
                    min = nums[j];
                    mark = j;
                }
            }
            int tmp = nums[i];
            nums[i] = min;
            nums[mark] = tmp;
        }
    }
}
